有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓无法转换java类型的值。双到字符串

我已经尝试了许多解决方案,这段代码在早上为我工作,现在当我运行它时,它显示了一个未知的错误,这是我的用户类 我甚至试着把它转换成doubl也没用。请帮助我

    public class createuser {

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getEmail() {
    return email;
    }

    public void setEmail(String email) {
    this.email = email;
    }

    public String getPassword() {
    return password;
    }

    public void setPassword(String password) {
    this.password = password;
    }

    public String getCode() {
    return code;
    }

    public void setCode(String code) {
    this.code = code;
    }

    public String getIssharing() {
    return issharing;
    }

    public void setIssharing(String issharing) {
    this.issharing = issharing;
    }

    public String getLat() {
    return lat;
    }

    public void setLat(String lat) {
    this.lat = lat;
    }

    public String getLng() {
    return lng;
    }

    public void setLng(String lng) {
    this.lng = lng;
    }

    public String getImgurl() {
    return imgurl;
    }

    public void setImgurl(String imgurl) {
    this.imgurl = imgurl;
    }

    public String getUserid() {
    return userid;
    }

    public void setUserid(String userid) {
    this.userid = userid;
    }

    public createuser() {
    }

    public String name, email, password, code, issharing, lat, lng, 
    imgurl, userid;

    public createuser(String name, String email, String password, String 
    code, String issharing, String lat, String lng, String imgurl, String 
    userid) {
    this.name = name;
    this.email = email;
    this.password = password;
    this.code = code;
    this.issharing = issharing;
    this.lat = lat;
    this.lng = lng;
    this.imgurl = imgurl;
    this.userid = userid;

    }
    }

这是我的运行时类

    code = (EditText)findViewById(R.id.editText);
    submit = (Button)findViewById(R.id.button);
    firebaseDatabase = FirebaseDatabase.getInstance();
    auth = FirebaseAuth.getInstance();
    user = auth.getCurrentUser();
    reference = 
          firebaseDatabase.getInstance().getReference().child("users");
    currentreference = 
          firebaseDatabase.getInstance().getReference().child("users")
                      .child(user.getUid());


          current_user_id = user.getUid();

     submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            query = 
     reference.orderByChild("code").equalTo(code.getText().toString());
            query.addListenerForSingleValueEvent
            (new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot 
     dataSnapshot) {
                    if (dataSnapshot.exists())
                    {


                        createuser createuser = null;

                        for (DataSnapshot childDss : 
      dataSnapshot.getChildren())
                        {
                            createuser = 
      childDss.getValue(createuser.class);
                            join_user_id = createuser.userid;

                            circlereference = 
      firebaseDatabase.getInstance().getReference().child("users")

      .child(join_user_id).child("Circlemembers");

                            circlejoin circlejoin = new 
       circlejoin(current_user_id);
                            circlejoin circlejoin1 = new 
        circlejoin(join_user_id);


        circlereference.child(user.getUid()).setValue(circlejoin)
                                    .addOnCompleteListener(new 
        OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull 
        Task<Void> task) {
                                            if (task.isSuccessful())
                                            {

        Toast.makeText(getApplicationContext(),"user joined 
        circle",Toast.LENGTH_SHORT).show();
                                                startActivity(new 
        Intent(joincircle.this,userlocation.class));
                                            }
                                        }
                                    });


                        }

                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(),"circle 
          code is invalid",Toast.LENGTH_LONG).show();
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError 
         databaseError) {

                }
            });
          }
        });
       } 

实时数据库是这样的

    users
    NwKzgM0NhuY7gT7eFiN9nwzumMG2
       code: "7260232"
       email: "trackit385@gmail.com"
       imgurl: "na"
       issharing: "false"
       lat: 17.3932339
       lng: 78.4440638
       name: "tejesh"
       password: "kinglion"
       userid: "NwKzgM0NhuY7gT7eFiN9nwzumMG2"

任何人请帮助我我无法解决它我的错误是

    com.google.firebase.database.DatabaseException: Failed to convert 
     value of type java.lang.Double to String

共 (2) 个答案

  1. # 1 楼答案

    您将得到以下错误:

    com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Double to String

    因为createuser类中的latlng字段是String类型,而在数据库中,两个文件都有double值,这是不正确的。要解决这个问题,只需将类中字段的类型更改为double

    公共类createuser{

        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getIssharing() {
            return issharing;
        }
    
        public void setIssharing(String issharing) {
            this.issharing = issharing;
        }
    
        public double getLat() {
            return lat;
        }
    
        public void setLat(double lat) {
            this.lat = lat;
        }
    
        public double getLng() {
            return lng;
        }
    
        public void setLng(double lng) {
            this.lng = lng;
        }
    
        public String getImgurl() {
            return imgurl;
        }
    
        public void setImgurl(String imgurl) {
            this.imgurl = imgurl;
        }
    
        public String getUserid() {
            return userid;
        }
    
        public void setUserid(String userid) {
            this.userid = userid;
        }
    
        public createuser() {
        }
    
        public String name, email, password, code, issharing,
                imgurl, userid;
        public double lat, lng;
    
        public createuser(String name, String email, String password, String
                code, String issharing, double lat, double lng, String imgurl, String
                                  userid) {
            this.name = name;
            this.email = email;
            this.password = password;
            this.code = code;
            this.issharing = issharing;
            this.lat = lat;
            this.lng = lng;
            this.imgurl = imgurl;
            this.userid = userid;
    
        }
    }
    
  2. # 2 楼答案

    我不知道,但是这个类缺少所有的字段声明。那应该是Double lat, Double lng。当字段为String且setter方法设置double时,这无法工作,至少除非添加匹配的setter。而且Doubledouble不是相同的数据类型。您将原语与复杂的数据类型(在这里,它们也有两种不同的蓝色)混淆,并且还定义了setter,但没有在构造函数中使用它们。。。第二种可能是口味的问题,但第一种在语法上是错误的,因为它意味着:按值调用与按引用调用。该类可能应该简单地称为User,因为您可能会在整个应用程序中使用它

    public class User {
    
        private Double lat;
        private Double lng;
        ...
    
        public User() {}
        public User(String name, String email, String password, String code, String issharing, Double lat, Double lng, String imgurl, String userid) {
            ...
        }
        ...
    
        public Double getLat() { return this.lat; }
        public Double getLng() { return this.lng; }
        public void setLat(Double value) { this.lat = value; }
        public void setLng(Double value) { this.lng = value; } 
    
    }